{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import json\n",
    "from pyecharts.charts import Pie\n",
    "from pyecharts import options as opts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [
    "base_path = './data/'"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [],
   "source": [
    "def build_mashup_apis():\n",
    "    with open(base_path + 'split_nodes.csv', 'r', encoding='utf-8') as file:\n",
    "        splits_c = pd.read_csv(file, encoding='utf-8')\n",
    "\n",
    "    with open(base_path + 'm-a_edges.csv', 'r', encoding='utf-8') as file:\n",
    "        edges = pd.read_csv(file, encoding='utf-8')\n",
    "\n",
    "    with open(base_path + 'split_nodes.csv', 'r', encoding='utf-8') as file:\n",
    "        split_ndoes = pd.read_csv(file, encoding='utf-8')\n",
    "\n",
    "    with open(base_path + 'tranfer_nodes.csv', 'r', encoding='utf-8') as file:\n",
    "        trans_nodes = pd.read_csv(file, encoding='utf-8')\n",
    "\n",
    "    with open(base_path + 'api_nodes_estimator.csv', 'r', encoding='utf-8') as file:\n",
    "        apis_c = pd.read_csv(file, encoding='utf-8', parse_dates=['st', 'et', 'oet'])\n",
    "    apis_c = apis_c.rename(columns={'url': 'a_url', 'name': 'a_name', 'st': 'a_st', 'et': 'a_et', 'oet': 'a_oet', 'c': 'a_c', 'oac': 'a_oac', 'ac': 'a_ac'})\n",
    "\n",
    "    with open(base_path + 'mashup_nodes_estimator2.csv', 'r', encoding='utf-8') as file:\n",
    "        mashups_c = pd.read_csv(file, encoding='utf-8', parse_dates=['st', 'et', 'oet'])\n",
    "        # mashups_c = mashups_c[mashups_c['tp'] == 'mashup']    # 这个版本的文件有问题，所以不要用这个去筛选\n",
    "        mashups_c = mashups_c[mashups_c['oac'] == True]\n",
    "\n",
    "    mashups_api = pd.merge(mashups_c, edges, how='left', left_on='name', right_on='source')\n",
    "    # 删除source列，因为跟name是一样的\n",
    "    mashups_api = mashups_api.drop(columns=['source'])\n",
    "    # 更名\n",
    "    mashups_api = mashups_api.rename(columns={'target': 'ra'})    # related api\n",
    "\n",
    "    mashups_api = pd.merge(mashups_api, split_ndoes, how='left', left_on='ra', right_on='source')\n",
    "    mashups_api = mashups_api.drop(columns=['source'])\n",
    "    mashups_api = mashups_api.rename(columns={'target': 'sta'})    # split target api\n",
    "\n",
    "    mashups_api = pd.merge(mashups_api, trans_nodes, how='left', left_on='ra', right_on='source')\n",
    "    mashups_api = mashups_api.drop(columns=['source'])\n",
    "    mashups_api = mashups_api.rename(columns={'target': 'tta'})    # transfer target api\n",
    "    # 将API的详细信息连接进去\n",
    "    mashups_api = pd.merge(mashups_api, apis_c, how='left', left_on='ra', right_on='a_url')\n",
    "    mashups_api = mashups_api.drop(columns=['a_url'])\n",
    "\n",
    "    return mashups_api\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "43\n",
      "                   source                              target\n",
      "0  /api/google-app-engine        /api/google-app-engine-admin\n",
      "1  /api/google-app-engine   /api/google-app-engine-task-queue\n",
      "2  /api/google-app-engine  /api/google-cloud-app-engine-tasks\n",
      "3  /api/google-app-engine    /api/google-app-engine-admin-rpc\n",
      "4        /api/google-maps             /api/google-static-maps\n",
      "12614\n",
      "                                              source  \\\n",
      "0                                Mashup: CouponRoots   \n",
      "1                            Mashup: Raise the Money   \n",
      "2                             Mashup: AnythingToHTML   \n",
      "3                                Mashup: Velocipedia   \n",
      "4  Mashup: Api Expert - MyMemory Language Translator   \n",
      "\n",
      "                                  target  \n",
      "0                            /api/coupon  \n",
      "1                     /api/nationbuilder  \n",
      "2  /api/hpe-haven-ondemand-view-document  \n",
      "3                            /api/mapbox  \n",
      "4                          /api/mymemory  \n",
      "43\n",
      "                   source                              target\n",
      "0  /api/google-app-engine        /api/google-app-engine-admin\n",
      "1  /api/google-app-engine   /api/google-app-engine-task-queue\n",
      "2  /api/google-app-engine  /api/google-cloud-app-engine-tasks\n",
      "3  /api/google-app-engine    /api/google-app-engine-admin-rpc\n",
      "4        /api/google-maps             /api/google-static-maps\n",
      "17\n",
      "                 source                               target\n",
      "0  /api/weather-channel       /api/weather-company-data-core\n",
      "1        /api/silverpop  /api/ibm-watson-customer-engagement\n",
      "2         /api/blockrio                        /api/coinbase\n",
      "3  /api/mondo-web-hooks                           /api/monzo\n",
      "4   /api/gunbroker-soap                       /api/gunbroker\n",
      "23579\n",
      "    tp                        a_url                                    a_name  \\\n",
      "0  api       /api/pinnaclecart-rest       PinnacleCart REST API MASTER RECORD   \n",
      "1  api  /api/volusion-shopping-cart  Volusion Shopping Cart API MASTER RECORD   \n",
      "2  api                 /api/untappd                 Untappd API MASTER RECORD   \n",
      "3  api                  /api/envato                  Envato API MASTER RECORD   \n",
      "4  api        /api/edrv-ev-charging        eDRV EV Charging API MASTER RECORD   \n",
      "\n",
      "        a_st       a_et      a_oet        a_c  a_oac   a_ac  \n",
      "0 2011-01-25 2013-06-29 2222-02-22  eCommerce   True  False  \n",
      "1 2012-06-14 2016-06-20 2222-02-22  eCommerce   True  False  \n",
      "2 2010-12-21 2222-02-22 2222-02-22       Food   True   True  \n",
      "3 2011-03-02 2012-12-03 2222-02-22  eCommerce   True  False  \n",
      "4 2020-07-29 2020-07-29 2222-02-22     Energy   True  False  \n",
      "33475\n",
      "33475\n"
     ]
    }
   ],
   "source": [
    "mashups_api = build_mashup_apis()\n",
    "# 确保所有都是oac=True的 Mashup\n",
    "print(len(mashups_api))\n",
    "mashups_api = mashups_api[mashups_api['oac'] == True]   # 筛选出PW上标记为活的mashup\n",
    "print(len(mashups_api))"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [
    {
     "data": {
      "text/plain": "                                                   tp_x  url  st  et  oet   c  \\\nname                                                                            \nMashup: #API Christmas                                1    1   1   1    1   1   \nMashup: #Ask4Stuff: WorldCat Twitter Search           4    4   4   4    4   4   \nMashup: #BeerMap - The Top 2,500 Beers on Twitter    14   14  14  14   14  14   \nMashup: #LinS Stats on Your LinkedIn Social Graph     2    2   2   2    2   2   \nMashup: #S42AT                                        9    9   9   9    9   9   \n...                                                 ...  ...  ..  ..  ...  ..   \nMashup: youbeQ - Maps with Life                      14   14  14  14   14  14   \nMashup: youniversus                                   1    1   1   1    1   1   \nMashup: youwerecute                                  10   10  10  10   10  10   \nMashup: ytwebservice                                  1    1   1   1    1   1   \nMashup: zangoa                                       10   10  10  10   10  10   \n\n                                                   oac  ac  ra  sta  tta  \\\nname                                                                       \nMashup: #API Christmas                               1   1   1    0    0   \nMashup: #Ask4Stuff: WorldCat Twitter Search          4   4   4    3    0   \nMashup: #BeerMap - The Top 2,500 Beers on Twitter   14  14  14   13    0   \nMashup: #LinS Stats on Your LinkedIn Social Graph    2   2   2    0    0   \nMashup: #S42AT                                       9   9   9    7    0   \n...                                                ...  ..  ..  ...  ...   \nMashup: youbeQ - Maps with Life                     14  14  14   10    0   \nMashup: youniversus                                  1   1   1    0    0   \nMashup: youwerecute                                 10  10  10   10    0   \nMashup: ytwebservice                                 1   1   1    0    0   \nMashup: zangoa                                      10  10  10   10    0   \n\n                                                   tp_y  a_name  a_st  a_et  \\\nname                                                                          \nMashup: #API Christmas                                1       1     1     1   \nMashup: #Ask4Stuff: WorldCat Twitter Search           4       4     4     4   \nMashup: #BeerMap - The Top 2,500 Beers on Twitter    14      14    14    14   \nMashup: #LinS Stats on Your LinkedIn Social Graph     2       2     2     2   \nMashup: #S42AT                                        9       9     9     9   \n...                                                 ...     ...   ...   ...   \nMashup: youbeQ - Maps with Life                      14      14    14    14   \nMashup: youniversus                                   1       1     1     1   \nMashup: youwerecute                                  10      10    10    10   \nMashup: ytwebservice                                  1       1     1     1   \nMashup: zangoa                                       10      10    10    10   \n\n                                                   a_oet  a_c  a_oac  a_ac  \nname                                                                        \nMashup: #API Christmas                                 1    1      1     1  \nMashup: #Ask4Stuff: WorldCat Twitter Search            4    4      4     4  \nMashup: #BeerMap - The Top 2,500 Beers on Twitter     14   14     14    14  \nMashup: #LinS Stats on Your LinkedIn Social Graph      2    2      2     2  \nMashup: #S42AT                                         9    9      9     9  \n...                                                  ...  ...    ...   ...  \nMashup: youbeQ - Maps with Life                       14   14     14    14  \nMashup: youniversus                                    1    1      1     1  \nMashup: youwerecute                                   10   10     10    10  \nMashup: ytwebservice                                   1    1      1     1  \nMashup: zangoa                                        10   10     10    10  \n\n[6247 rows x 19 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>tp_x</th>\n      <th>url</th>\n      <th>st</th>\n      <th>et</th>\n      <th>oet</th>\n      <th>c</th>\n      <th>oac</th>\n      <th>ac</th>\n      <th>ra</th>\n      <th>sta</th>\n      <th>tta</th>\n      <th>tp_y</th>\n      <th>a_name</th>\n      <th>a_st</th>\n      <th>a_et</th>\n      <th>a_oet</th>\n      <th>a_c</th>\n      <th>a_oac</th>\n      <th>a_ac</th>\n    </tr>\n    <tr>\n      <th>name</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>Mashup: #API Christmas</th>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>Mashup: #Ask4Stuff: WorldCat Twitter Search</th>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>3</td>\n      <td>0</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n    </tr>\n    <tr>\n      <th>Mashup: #BeerMap - The Top 2,500 Beers on Twitter</th>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>13</td>\n      <td>0</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n    </tr>\n    <tr>\n      <th>Mashup: #LinS Stats on Your LinkedIn Social Graph</th>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n    </tr>\n    <tr>\n      <th>Mashup: #S42AT</th>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>7</td>\n      <td>0</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n      <td>9</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>Mashup: youbeQ - Maps with Life</th>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>10</td>\n      <td>0</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n      <td>14</td>\n    </tr>\n    <tr>\n      <th>Mashup: youniversus</th>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>Mashup: youwerecute</th>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>0</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n    </tr>\n    <tr>\n      <th>Mashup: ytwebservice</th>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>Mashup: zangoa</th>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>0</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n      <td>10</td>\n    </tr>\n  </tbody>\n</table>\n<p>6247 rows × 19 columns</p>\n</div>"
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# how many mashups are there\n",
    "mashups_api.groupby('name').count()\n",
    "# output says 6247"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "# 修改原数据，只保留年份\n",
    "mashups_api['st'] = mashups_api['st'].dt.year\n",
    "mashups_api['et'] = mashups_api['et'].dt.year\n",
    "mashups_api['oet'] = mashups_api['oet'].dt.year"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [],
   "source": [
    "dd = 'death'\n",
    "ss = 'split'\n",
    "tt = 'transfer'"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [],
   "source": [
    "def count_apis(by_ours=False):\n",
    "    split_apis = set()\n",
    "    transfer_apis = set()\n",
    "    all_dead_apis = set()\n",
    "    all_apis = set()\n",
    "    # marked_dead_apis = set()\n",
    "    for index, row in mashups_api.iterrows():\n",
    "        api_name = row['ra']\n",
    "        all_apis.add(api_name)\n",
    "        # programmableweb 上标注为死亡的API\n",
    "\n",
    "        # 使用oac 和 ac会产生不同的统计结果\n",
    "        if by_ours:\n",
    "            # 用a_ac判断\n",
    "            if not row['a_ac']:\n",
    "                all_dead_apis.add(api_name)\n",
    "            if not pd.isna(row['sta']):\n",
    "                all_dead_apis.add(api_name)\n",
    "                split_apis.add(api_name)\n",
    "            if not pd.isna(row['tta']):\n",
    "                all_dead_apis.add(api_name)\n",
    "                transfer_apis.add(api_name)\n",
    "        else:\n",
    "            # 用a_oac判断\n",
    "            if not row['a_oac']:\n",
    "                all_dead_apis.add(api_name)\n",
    "            if not pd.isna(row['sta']):\n",
    "                all_dead_apis.add(api_name)\n",
    "                split_apis.add(api_name)\n",
    "            if not pd.isna(row['tta']):\n",
    "                all_dead_apis.add(api_name)\n",
    "                transfer_apis.add(api_name)\n",
    "\n",
    "    death_apis = all_dead_apis - (split_apis | transfer_apis)\n",
    "\n",
    "    print(len(all_dead_apis), len(split_apis), len(transfer_apis), len(death_apis))\n",
    "    # all_apis = list(all_apis)\n",
    "    return death_apis, split_apis, transfer_apis\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "316 5 4 307\n"
     ]
    }
   ],
   "source": [
    "death_apis, split_apis, transfer_apis = count_apis()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "outputs": [],
   "source": [
    "# 根据年份获取这一年使用了split的mashup的名字列表\n",
    "# 9.23 修正：因为Mashup 的死亡日期是估算出来的，因此不再使用死亡日期作判断依据\n",
    "def get_count_by_year(year, type_ = None):\n",
    "    \"\"\"\n",
    "        例如传入2020, ['death']，会返回截止至2020年底，已发布的mashup中，仅仅使用了death类型API的。\n",
    "        例如传入2020, ['death', 'split']，会返回截止至2020年底，已发布的mashup中，仅仅是用了death 和 split类型的API\n",
    "    \"\"\"\n",
    "    if type_ is None:\n",
    "\t    type_ = []\n",
    "    mashups = set()         # 只要用了死亡的API就加入\n",
    "    use_split = set()       # 只要用了split的API就加入\n",
    "    use_transfer = set()    # 只要用了transfer的API就加入\n",
    "    use_death = set()       # 只要用了death的API就加入\n",
    "\n",
    "    for index, row in mashups_api.iterrows():\n",
    "        name = row['name']\n",
    "        api_name = row['ra']\n",
    "        st = row['st'].year      # 发布日期\n",
    "        # et = row['et'].year      # 死亡日期\n",
    "\n",
    "        if st <= year:     # 发布日期小于这一年且死亡日期大于这一年\n",
    "            if api_name in split_apis:\n",
    "                use_split.add(name)\n",
    "                mashups.add(name)\n",
    "\n",
    "            if api_name in transfer_apis:\n",
    "                use_transfer.add(name)\n",
    "                mashups.add(name)\n",
    "\n",
    "\n",
    "            if api_name in death_apis:\n",
    "                use_death.add(name)\n",
    "                mashups.add(name)\n",
    "\n",
    "    all_used = use_death & use_split & use_transfer & mashups\n",
    "\n",
    "    if len(type_) == 3:\n",
    "        mashups = all_used\n",
    "    elif len(type_) == 2:\n",
    "        # 两个及以上\n",
    "        if dd in type_:\n",
    "            mashups = mashups & use_death\n",
    "        if ss in type_:\n",
    "            mashups = mashups & use_split\n",
    "        if tt in type_:\n",
    "            mashups = mashups & use_transfer\n",
    "\n",
    "        mashups = mashups - all_used\n",
    "    else:\n",
    "        # 仅一个\n",
    "        if dd in type_:\n",
    "            mashups = use_death - use_split - use_transfer\n",
    "        elif ss in type_:\n",
    "            mashups = use_split - use_death - use_transfer\n",
    "        elif tt in type_:\n",
    "            mashups = use_transfer - use_death - use_split\n",
    "\n",
    "    return list(mashups)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "# test\n",
    "use_split_mashups_2017 = get_count_by_year(2020, ['death', 'split'])\n",
    "len(use_split_mashups_2017)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 统计如下"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 依据PW oac"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "outputs": [
    {
     "data": {
      "text/plain": "[965, 2147, 57, 501, 25, 35, 41]"
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels = ['Death', 'Split', 'Transfer', 'Death+Split', 'Split+Transfer', 'Transfer+Death', 'Death+Split+Transfer']\n",
    "death = get_count_by_year(2020, [dd])\n",
    "split = get_count_by_year(2020, [ss])\n",
    "transfer = get_count_by_year(2020, [tt])\n",
    "death_split = get_count_by_year(2020, [dd, ss])\n",
    "split_transfer = get_count_by_year(2020, [tt, ss])\n",
    "transfer_death = get_count_by_year(2020, [tt, dd])\n",
    "death_split_transfer = get_count_by_year(2020, [tt, ss, dd])\n",
    "lens = [len(death), len(split), len(transfer) ,len(death_split), len(split_transfer), len(transfer_death), len(death_split_transfer)]\n",
    "lens"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "#### 绘图"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\zyq\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/plain": "'C:\\\\Users\\\\zyq\\\\iCloudDrive\\\\Projects\\\\mashuppies\\\\mashups_dead_api_usage_oac.html'"
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pie = Pie()\n",
    "count = [len(death), len(split), len(transfer) ,len(death_split), len(split_transfer), len(transfer_death), len(death_split_transfer)]\n",
    "\n",
    "# 修改数据格式\n",
    "pie_data = []\n",
    "for i in range(len(count)):\n",
    "    pie_data.append((labels[i], count[i]))\n",
    "\n",
    "pie.add(' ', pie_data, center=['50%', '60%'])\n",
    "pie.set_series_opts(label_opts=opts.LabelOpts(\n",
    "                                                position=\"outside\",\n",
    "                                                formatter=\"{a|{a}}{abg|}\\n{hr|}\\n {b|{b}: }{c}  {per|{d}%}  \",\n",
    "                                                background_color=\"#eee\",\n",
    "                                                border_color=\"#aaa\",\n",
    "                                                border_width=1,\n",
    "                                                border_radius=4,\n",
    "                                                rich={\n",
    "                                                    \"a\": {\"color\": \"#999\", \"lineHeight\": 22, \"align\": \"center\"},\n",
    "                                                    \"abg\": {\n",
    "                                                        \"backgroundColor\": \"#e3e3e3\",\n",
    "                                                        \"width\": \"100%\",\n",
    "                                                        \"align\": \"right\",\n",
    "                                                        \"height\": 22,\n",
    "                                                        \"borderRadius\": [4, 4, 0, 0],\n",
    "                                                    },\n",
    "                                                    \"hr\": {\n",
    "                                                        \"borderColor\": \"#aaa\",\n",
    "                                                        \"width\": \"100%\",\n",
    "                                                        \"borderWidth\": 0.5,\n",
    "                                                        \"height\": 0,\n",
    "                                                    },\n",
    "                                                    \"b\": {\"fontSize\": 16, \"lineHeight\": 33},\n",
    "                                                    \"per\": {\n",
    "                                                        \"color\": \"#eee\",\n",
    "                                                        \"backgroundColor\": \"#334455\",\n",
    "                                                        \"padding\": [2, 4],\n",
    "                                                        \"borderRadius\": 2,\n",
    "                                                    },\n",
    "                                                },\n",
    "                                            ),\n",
    "                                        )\n",
    "pie.render('mashups_dead_api_usage_oac.html')\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 依据我们访问的结果ac"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\zyq\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1186 5 4 1177\n"
     ]
    },
    {
     "data": {
      "text/plain": "[2476, 1549, 39, 1099, 11, 53, 55]"
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "death_apis, split_apis, transfer_apis = count_apis(by_ours=True)\n",
    "labels = ['Death', 'Split', 'Transfer', 'Death+Split', 'Split+Transfer', 'Transfer+Death', 'Death+Split+Transfer']\n",
    "death = get_count_by_year(2020, [dd])\n",
    "split = get_count_by_year(2020, [ss])\n",
    "transfer = get_count_by_year(2020, [tt])\n",
    "death_split = get_count_by_year(2020, [dd, ss])\n",
    "split_transfer = get_count_by_year(2020, [tt, ss])\n",
    "transfer_death = get_count_by_year(2020, [tt, dd])\n",
    "death_split_transfer = get_count_by_year(2020, [tt, ss, dd])\n",
    "lens = [len(death), len(split), len(transfer) ,len(death_split), len(split_transfer), len(transfer_death), len(death_split_transfer)]\n",
    "lens"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "#### 绘图"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\zyq\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/plain": "'C:\\\\Users\\\\zyq\\\\iCloudDrive\\\\Projects\\\\mashuppies\\\\mashups-dead_api_usage_ac.html'"
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pie = Pie()\n",
    "count = [len(death), len(split), len(transfer) ,len(death_split), len(split_transfer), len(transfer_death), len(death_split_transfer)]\n",
    "\n",
    "# 修改数据格式\n",
    "pie_data = []\n",
    "for i in range(len(count)):\n",
    "    pie_data.append((labels[i], count[i]))\n",
    "\n",
    "pie.add(' ', pie_data, center=['50%', '60%'])\n",
    "pie.set_series_opts(label_opts=opts.LabelOpts(\n",
    "                                                position=\"outside\",\n",
    "                                                formatter=\"{a|{a}}{abg|}\\n{hr|}\\n {b|{b}: }{c}  {per|{d}%}  \",\n",
    "                                                background_color=\"#eee\",\n",
    "                                                border_color=\"#aaa\",\n",
    "                                                border_width=1,\n",
    "                                                border_radius=4,\n",
    "                                                rich={\n",
    "                                                    \"a\": {\"color\": \"#999\", \"lineHeight\": 22, \"align\": \"center\"},\n",
    "                                                    \"abg\": {\n",
    "                                                        \"backgroundColor\": \"#e3e3e3\",\n",
    "                                                        \"width\": \"100%\",\n",
    "                                                        \"align\": \"right\",\n",
    "                                                        \"height\": 22,\n",
    "                                                        \"borderRadius\": [4, 4, 0, 0],\n",
    "                                                    },\n",
    "                                                    \"hr\": {\n",
    "                                                        \"borderColor\": \"#aaa\",\n",
    "                                                        \"width\": \"100%\",\n",
    "                                                        \"borderWidth\": 0.5,\n",
    "                                                        \"height\": 0,\n",
    "                                                    },\n",
    "                                                    \"b\": {\"fontSize\": 16, \"lineHeight\": 33},\n",
    "                                                    \"per\": {\n",
    "                                                        \"color\": \"#eee\",\n",
    "                                                        \"backgroundColor\": \"#334455\",\n",
    "                                                        \"padding\": [2, 4],\n",
    "                                                        \"borderRadius\": 2,\n",
    "                                                    },\n",
    "                                                },\n",
    "                                            ),\n",
    "                                        )\n",
    "pie.render('mashups-dead_api_usage_ac.html')\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 按年统计mashup使用api的数量"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "outputs": [
    {
     "data": {
      "text/plain": "7947"
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "with open('graph_data_backup/data0906-1.txt', 'r', encoding='utf-8') as file:\n",
    "    active_mashups = json.load(file)\n",
    "    active_mashups = [a for a in active_mashups if a is not None]\n",
    "\n",
    "with open('graph_data_backup/deadpool_mashups0917.txt', 'r', encoding='utf-8') as file:\n",
    "    dead_mashups = json.load(file)\n",
    "    dead_mashups = [d for d in dead_mashups if d is not None]\n",
    "\n",
    "all_mashups = active_mashups + dead_mashups\n",
    "len(all_mashups)\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(API数量, 出现次数)\n"
     ]
    },
    {
     "data": {
      "text/plain": "[(20, ['Mashup: G4ng2010', \"Mashup: What's Public2011\"]),\n (21,\n  ['Mashup: ConnectorLocal2009',\n   'Mashup: ShipStation2012',\n   'Mashup: coderbits2013']),\n (22, ['Mashup: vplan.com/search2013']),\n (23, ['Mashup: Gawkk.com2008']),\n (24, ['Mashup: Sociotoco Search2009']),\n (28, ['Mashup: Pixelpipe2008']),\n (29, ['Mashup: DoAt (do@)2011']),\n (37, ['Mashup: We-Wired Web2012'])]"
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 可删\n",
    "count_dict = {}\n",
    "# for am in all_mashups:\n",
    "#     ra = am['related_apis']\n",
    "#     length = len(ra)\n",
    "#     if length in count_dict:\n",
    "#         count_dict[length].append(am['title'] + am['date'])\n",
    "#     else:\n",
    "#         count_dict[length] = [am['title'] + am['date']]\n",
    "\n",
    "for name, group in mashups_api[['name', 'st', 'et', 'oet', 'ra']].groupby('name'):\n",
    "    length = len(group.groupby('ra'))\n",
    "    if length in count_dict:\n",
    "        count_dict[length].append(name + str(group.iloc[[0], [1]].values[0][0]))\n",
    "    else:\n",
    "        count_dict[length] = [name + str(group.iloc[[0], [1]].values[0][0])]\n",
    "\n",
    "\n",
    "print('(API数量, 出现次数)')\n",
    "# for key in sorted(count_dict.keys()):\n",
    "#     if len(count_dict[key]) >= 20:\n",
    "#         print((key, count_dict[key]))\n",
    "[(key, count_dict[key]) for key in sorted(count_dict.keys()) if key >= 20]"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "outputs": [
    {
     "data": {
      "text/plain": "(['Mashup: Headup02.05.2009'],\n ['Mashup: We-Wired Web06.14.2012\\n'],\n ['Mashup: Tagbulb12.02.2006'])"
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "count_dict[36], count_dict[37],count_dict[63]"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'all_mashups' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mNameError\u001B[0m                                 Traceback (most recent call last)",
      "\u001B[1;32m<ipython-input-16-ac4c5542f9a4>\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[0;32m      2\u001B[0m \u001B[0mdate_dict\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;33m{\u001B[0m\u001B[1;33m}\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m      3\u001B[0m \u001B[1;31m# 利用他们的名字构造一个时间dict\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m----> 4\u001B[1;33m \u001B[1;32mfor\u001B[0m \u001B[0mm\u001B[0m \u001B[1;32min\u001B[0m \u001B[0mall_mashups\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m      5\u001B[0m     \u001B[0mname\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mm\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m'title'\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m      6\u001B[0m     \u001B[0mst\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mdatetime\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdatetime\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mstrptime\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mm\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m'date'\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mstrip\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;34m'%m.%d.%Y'\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdate\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;31mNameError\u001B[0m: name 'all_mashups' is not defined"
     ]
    }
   ],
   "source": [
    "import datetime\n",
    "date_dict = {}\n",
    "# 利用他们的名字构造一个时间dict\n",
    "for m in all_mashups:\n",
    "    name = m['title']\n",
    "    st = datetime.datetime.strptime(m['date'].strip(), '%m.%d.%Y').date()\n",
    "    date_dict[name] = st\n",
    "\n",
    "len(date_dict)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 统计历年mashup平均使用api的数量"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "outputs": [],
   "source": [
    "def init_dict():\n",
    "    api_count = {\n",
    "        yy: 0 for yy in range(2005, 2021)\n",
    "    }\n",
    "\n",
    "    mashup_count = {\n",
    "        yy: 0 for yy in range(2005, 2021)\n",
    "    }\n",
    "\n",
    "    return api_count, mashup_count"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 平均值，折线图"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 箱形图"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [],
   "source": [
    "api_usage = {\n",
    "    x: [] for x in range(2005, 2021)\n",
    "}\n",
    "\n",
    "# for am in all_mashups:\n",
    "#     year = am['date'].strip().split('.')[2]\n",
    "#     api_usage[int(year)].append(len(am['related_apis']))\n",
    "\n",
    "for name, group in mashups_api[['name', 'st', 'et', 'oet', 'ra']].groupby('name'):\n",
    "    year = int(group.iloc[[0], [1]].values[0][0])\n",
    "    api_usage[year].append(len(group.groupby('ra')))\n",
    "\n",
    "boxes = [usage for usage in api_usage.values()]"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 1152x864 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(16, 12))\n",
    "plt.xticks(fontsize=22, rotation=45)\n",
    "plt.yticks(fontsize=20)\n",
    "plt.xlabel('Year', fontsize=20)\n",
    "plt.ylabel('Number of APIs', fontsize=20)\n",
    "plt.boxplot(boxes, labels=api_usage.keys())\n",
    "plt.savefig('mashup_complexity_newly_submit.png', dpi=150)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "## 统计历年新提交的mashup使用api数量的变化（改成箱型图）"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [],
   "source": [
    "mashups_api['st'] = mashups_api['st'].dt.year"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 0 Axes>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "st_mashup_api_count, mashup_count = init_dict()\n",
    "# st_mashup_api_count = {\n",
    "#     k: [] for k in range(2005, 2021)\n",
    "# }\n",
    "\n",
    "# 现在把year取出来，然后用year为索引\n",
    "for name, group in mashups_api[['name', 'st', 'et', 'oet', 'ra']].groupby('name'):\n",
    "    # print(group)\n",
    "    st = int(group.iloc[[0], [1]].values[0][0])\n",
    "    mashup_count[st] += 1\n",
    "    count = len(group.groupby('ra'))\n",
    "    # api_count[et] += count\n",
    "    st_mashup_api_count[st] += count\n",
    "\n",
    "# boxes = [usage for usage in st_mashup_api_count.values()]\n",
    "# plt.figure(figsize=(14, 8))\n",
    "# plt.xlabel('Year')\n",
    "# plt.ylabel('Number of APIs (Submit)')\n",
    "# plt.boxplot(boxes, labels=st_mashup_api_count.keys())\n",
    "\n",
    "y3 = []\n",
    "for k in mashup_count.keys():\n",
    "    if st_mashup_api_count[k] != 0:\n",
    "        y3.append(st_mashup_api_count[k] / float(mashup_count[k]))\n",
    "    else:\n",
    "        y3.append(0)\n",
    "# y2 = [et_mashup_api_count[k] / float(mashup_count[k]) for k in mashup_count.keys()]\n",
    "x = [i for i in mashup_count.keys()]\n",
    "plt.plot(x, y3)\n",
    "plt.show()\n",
    "plt.savefig('et.png', dpi=500)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "outputs": [
    {
     "data": {
      "text/plain": "(1.2857142857142858, 2.492248062015504)"
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "min(y3), max(y3)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 统计历年死亡mashup使用的api的数量变化（et决定）"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 0 Axes>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "et_mashup_api_count, mashup_count = init_dict()\n",
    "\n",
    "# 现在把year取出来，然后用year为索引，将len(group)和1分别相加到上面的dict中\n",
    "for name, group in mashups_api[['name', 'st', 'et', 'oet', 'ra']].groupby('name'):\n",
    "    et = int(group.iloc[[0], [2]].values[0][0])\n",
    "    if et != 2222:\n",
    "       mashup_count[et] += 1\n",
    "       count = len(group.groupby('ra'))\n",
    "       api_count[et] += count\n",
    "       et_mashup_api_count[et] += count\n",
    "\n",
    "y2 = []\n",
    "for k in mashup_count.keys():\n",
    "    if et_mashup_api_count[k] != 0:\n",
    "        y2.append(et_mashup_api_count[k] / float(mashup_count[k]))\n",
    "    else:\n",
    "        y2.append(0)\n",
    "# y2 = [et_mashup_api_count[k] / float(mashup_count[k]) for k in mashup_count.keys()]\n",
    "\n",
    "plt.plot(x, y2)\n",
    "plt.show()\n",
    "plt.savefig('et.png', dpi=500)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 统计历年死亡mashup使用的api的数量变化（oet决定）"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 0 Axes>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "oet_mashup_api_count, mashup_count = init_dict()\n",
    "\n",
    "for name, group in mashups_api[['name', 'st', 'et', 'oet', 'ra']].groupby('name'):\n",
    "    oet = int(group.iloc[[0], [3]].values[0][0])\n",
    "    if oet != 2222:\n",
    "       mashup_count[oet] += 1\n",
    "       count = len(group)\n",
    "       api_count[oet] += count\n",
    "       oet_mashup_api_count[oet] += count\n",
    "\n",
    "y3 = []\n",
    "for k in mashup_count.keys():\n",
    "    if oet_mashup_api_count[k] != 0:\n",
    "        y3.append(oet_mashup_api_count[k] / float(mashup_count[k]))\n",
    "    else:\n",
    "        y3.append(0)\n",
    "\n",
    "# y3 = [oet_mashup_api_count[k] / float(mashup_count[k]) for k in mashup_count.keys()]\n",
    "\n",
    "plt.plot(x, y3)\n",
    "plt.show()\n",
    "plt.savefig('oet.png', dpi=500)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 读取死亡mashup的源文件（json），观察mashup使用api数量的变化\n",
    "\n",
    "为什么这么做：\n",
    "- 因为csv格式化文件里面的oet好像有问题，导致我无法统计处正确信息，所以读一下源文件看看"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'dead_mashups' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mNameError\u001B[0m                                 Traceback (most recent call last)",
      "\u001B[1;32m<ipython-input-14-eb733f15524b>\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[0;32m      2\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m      3\u001B[0m \u001B[1;31m# 用上面读过的dead_mashups做一次统计\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m----> 4\u001B[1;33m \u001B[1;32mfor\u001B[0m \u001B[0mdm\u001B[0m \u001B[1;32min\u001B[0m \u001B[0mdead_mashups\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m      5\u001B[0m     \u001B[0moet\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m'20'\u001B[0m \u001B[1;33m+\u001B[0m \u001B[0mdm\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m'deprecated_date_estimated'\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0msplit\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m' '\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;36m0\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0msplit\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m'-'\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;36m2\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m      6\u001B[0m     \u001B[0mras\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mdm\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m'related_apis'\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
      "\u001B[1;31mNameError\u001B[0m: name 'dead_mashups' is not defined"
     ]
    }
   ],
   "source": [
    "oet_mashup_api_count, mashup_count = init_dict()\n",
    "\n",
    "# 用上面读过的dead_mashups做一次统计\n",
    "for dm in dead_mashups:\n",
    "    oet = int('20' + dm['deprecated_date_estimated'].split(' ')[0].split('-')[2])\n",
    "    ras = dm['related_apis']\n",
    "    oet_mashup_api_count[oet] += len(ras)\n",
    "    mashup_count[oet] += 1\n",
    "\n",
    "x = [k for k in mashup_count.keys()]\n",
    "y3 = []\n",
    "for k in mashup_count.keys():\n",
    "    if oet_mashup_api_count[k] != 0:\n",
    "        y3.append(oet_mashup_api_count[k] / float(mashup_count[k]))\n",
    "    else:\n",
    "        y3.append(0)\n",
    "\n",
    "plt.plot(x, y3)\n",
    "plt.show()\n",
    "plt.savefig('oet.png', dpi=500)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "- 下面做两个统计：\n",
    "    1. 统计死亡的mashup的api用量，绘制箱形图\n",
    "    2. 统计活着的mashup的api用量，绘制箱形图\n",
    "\n",
    "    **需要累积**"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [],
   "source": [
    "api_usage_a = {\n",
    "    x: [] for x in range(2005, 2021)\n",
    "}\n",
    "\n",
    "api_usage_d = {\n",
    "    x: [] for x in range(2005, 2021)\n",
    "}\n",
    "\n",
    "mashup_count_a, mashup_count_d = init_dict()\n",
    "\n",
    "for name, group in mashups_api[['name', 'st', 'et', 'oet', 'ra', 'ac']].groupby('name'):\n",
    "    year = int(group.iloc[[0], [1]].values[0][0])\n",
    "    et = int(group.iloc[[0], [2]].values[0][0])\n",
    "    et = min(2020, et)\n",
    "    ac = bool(group.iloc[[0], [5]].values[0][0])\n",
    "    if True:\n",
    "\n",
    "        for y in range(year, et + 1):\n",
    "            api_usage_a[y].append(len(group.groupby('ra')))\n",
    "            mashup_count_a[y] += 1\n",
    "\n",
    "        # api_usage_a[year].append(len(group.groupby('ra')))\n",
    "        # mashup_count_a[year] += 1\n",
    "    else:\n",
    "        # 这一段暂时不写了，也要写成if为true时里面的样子才是正确的\n",
    "        api_usage_d[year].append(len(group.groupby('ra')))\n",
    "        mashup_count_d[year] += 1\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 1152x864 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ac == True\n",
    "boxes = [usage for usage in api_usage_a.values()]\n",
    "plt.figure(figsize=(16, 12))\n",
    "plt.xticks(fontsize=22, rotation=45)\n",
    "plt.yticks(fontsize=20)\n",
    "plt.xlabel('Year', fontsize=20)\n",
    "plt.ylabel('Number of APIs', fontsize=20)\n",
    "plt.boxplot(boxes, labels=api_usage_a.keys())\n",
    "plt.savefig('mashup_complexity_overall.png', dpi=150)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "# ac == False\n",
    "boxes = [usage for usage in api_usage_d.values()]\n",
    "plt.figure(figsize=(14, 8))\n",
    "plt.xlabel('Year')\n",
    "plt.ylabel('Number of APIs (Deactivated)')\n",
    "plt.boxplot(boxes, labels=api_usage_d.keys())"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [
    {
     "data": {
      "text/plain": "[<matplotlib.lines.Line2D at 0x2b314f7f310>]"
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 如果绘制平均值的折线图？\n",
    "# active\n",
    "y = [sum(api_usage_a[key]) / float(mashup_count_a[key]) for key in mashup_count_a]\n",
    "plt.plot(y)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "data": {
      "text/plain": "[<matplotlib.lines.Line2D at 0x2b315e93d00>]"
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# dead\n",
    "y = [sum(api_usage_d[key]) / float(mashup_count_d[key]) for key in mashup_count_d]\n",
    "plt.plot(y)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}